package com.xiaomi.baidumap.login;

import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.webkit.CookieManager;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;


import com.xiaomi.baidumap.MainActivity;
import com.xiaomi.baidumap.R;
import com.xiaomi.baidumap.common.ActivityUtils;
import com.xiaomi.baidumap.network.GithubApi;



import butterknife.BindView;
import butterknife.ButterKnife;
import pl.droidsonroids.gif.GifImageView;

/**
 * Created by Administrator on 16-8-25.
 */

/*
* 1.使用webview来加载登录网址，实现帐号的登录和填写
* 2.是否同意授权，如果同意授权，重定向一个URL,会有一个临时的code
* 3.拿到临时授权码之后，使用API获得一个用户的token
* 4.获得用户token之后，会访问user等，主要为了拿到用户的信息并且来显示出来
* */
public class LoginActivity extends AppCompatActivity implements LoginView{

    @BindView(R.id.toolbar)
    Toolbar toolbar;
    @BindView(R.id.webView)
    WebView webView;
    @BindView(R.id.gifImageView)
    GifImageView gifImageView;

    private LoginPresenter presenter;
    private ActivityUtils activityUtils;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        activityUtils = new ActivityUtils(this);
    }

    @Override
      public void onContentChanged() {
        super.onContentChanged();
        ButterKnife.bind(this);
        //设置toolbar
        setSupportActionBar(toolbar);
        getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);

        presenter = new LoginPresenter(this);
        initWebView();
    }

    private void initWebView() {
        //删除登录之前的用户信息
        //主要是为了清楚登录记录
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.removeAllCookie();

        //加载网址 记得加上网络权限
        webView.loadUrl(GithubApi.AUTH_URL);
        //让webview获得焦点
        webView.setFocusable(true);
        webView.setFocusableInTouchMode(true);

        //设置webview进度的监听，让它加载完成之后，隐藏动画，显示webview
        webView.setWebChromeClient(webChromeClient);
        //监听页面刷新的时候
        webView.setWebViewClient(webViewClient);
    }

    //设置进度的监听
    private WebChromeClient webChromeClient = new WebChromeClient(){
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            //当进度条加载完之后显示登录界面
            if(newProgress >= 100){
                gifImageView.setVisibility(View.GONE);
            }

            super.onProgressChanged(view, newProgress);
        }
    };
    //页面是否刷新的监听
    private WebViewClient webViewClient = new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            //页面刷新的时候是否和我们定义的重定向是否一致
            Uri uri = Uri.parse(url);
            if(GithubApi.CALL_BACK.equals(uri.getScheme())){
                //获得临时授权码
                String code = uri.getQueryParameter("code");
                //得到临时授权码之后，进行操作获得token
                presenter.login(code);
                return true;
            }

            return super.shouldOverrideUrlLoading(view, url);
        }
    };

    @Override
    public void gotoMainActivity() {
        //跳转到主界面
        activityUtils.startActivity(MainActivity.class);
        finish();
    }

    @Override
    public void showMessage(String msg) {
        activityUtils.showToast(msg);
    }

    @Override
    public void showProgress() {
        gifImageView.setVisibility(View.VISIBLE);
    }

    @Override
    public void resetWebView() {
        initWebView();
    }
}
